﻿using MasterEntities.Abstraction;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MasterEntities
{
    public class Osoba : IDomainObject
    {
        public long Id { get; set; }
        public string Naziv { get; set; }
        public DateTime? VremeKreiranja { get; set; }
        public bool? Rezident { get; set; }
        public string IdentifikacioniBroj { get; set; }
        public string Jezik { get; set; }
        public long IdentifikacioniDokumentId { get; set; }
        public byte[] Slika { get; set; }
        public IdentifikacioniDokument IdentifikacioniDokument { get; set; }

        public Osoba() { }

        public Osoba(long Id, string Naziv, DateTime? VremeKreiranja, bool? Rezident, string IdentifikacioniBroj, string Jezik, long IdentifikacioniDokumentId, byte[] Slika, IdentifikacioniDokument IdentifikacioniDokument) : this(Id, Naziv, VremeKreiranja, Rezident, IdentifikacioniBroj, Jezik, IdentifikacioniDokumentId, Slika)
        {
            this.IdentifikacioniDokument = IdentifikacioniDokument;
        }

        public Osoba(long Id, string Naziv, DateTime? VremeKreiranja, bool? Rezident, string IdentifikacioniBroj, string Jezik, long IdentifikacioniDokumentId, byte[] Slika)
        {
            this.Id = Id;
            this.Naziv = Naziv;
            this.VremeKreiranja = VremeKreiranja;
            this.Rezident = Rezident;
            this.IdentifikacioniBroj = IdentifikacioniBroj;
            this.Jezik = Jezik;
            this.Slika = Slika;
            this.IdentifikacioniDokumentId = IdentifikacioniDokumentId;
        }

        public string Alias()
        {
            return "os";
        }

        public string BaseClassName()
        {
            return string.Empty;
        }

        public string SchemaName()
        {
            return "dbo";
        }

        public string PrimaryKey()
        {
            return Id.ToString();
        }

        public string GetTableName()
        {
            return this.GetType().Name;
        }

        public string InsertColumns()
        {
            return "(Id, Naziv, VremeKreiranja, Rezident, IdentifikacioniBroj, Jezik, IdentifikacioniDokumentId, Slika)";
        }

        public string ColumnsToUpdate()
        {
            return "Naziv = '" + Naziv + "', VremeKreiranja = NULL" + ", Rezident = " + (Rezident == null ? "NULL" : (bool)Rezident == true ? "1" : "0") + ",IdentifikacioniBroj = '" + IdentifikacioniBroj + "',Jezik ='" + Jezik + "', Slika = @Slika";
        }

        public string InsertValues()
        {
            return "( " + Id.ToString() + " , '" + Naziv + "', " + (VremeKreiranja == null ? "NULL" : "'" + Convert.ToDateTime(VremeKreiranja) + "'") + " , " + (Rezident == null ? "NULL" : (bool)Rezident == true ? "1" : "0") + " , '" + IdentifikacioniBroj + "' , '" + Jezik + "'," + (IdentifikacioniDokumentId == 0 ? "NULL" : IdentifikacioniDokumentId.ToString()) + ", @Slika" +")";
            //+ (Slika == null ? "NULL" : Slika.ToString() ) +
        }


        public byte[] GetProfilePicture()
        {
            return Slika;
        }
    }
}
